← Back shared

본문 바로가기

블로그

카테고리 이동

시스템 트레이딩

[금융파이썬 #4-1] 금융 시계열 데이터를 활용한 머신러닝 모델링에서 정상성 체크는 필요한가?

도전하는아이

2024. 7. 18. 10:00

최근에 FIND-A에서 시계열 데이터 분석을 공부하면서, 매크로 경제지표를 바탕으로 업종별 ETF의 등락을 예측하는 프로젝트 를 진행했었다.

매크로 경제지표 데이터와 업종별 ETF 주가 데이터를 월 간격으로 가져온 후 xgboost LSTM 을 적용해보면서 문득 드는 의문이 있었다.

ARIMA나 선형 회귀를 쓸 것도 아닌데

데이터 정상성 체크하고 차분해야 하나?

먼저 정상성 이란 시간과 무관하게 시계열 데이터 의 평균과 분산이 일정하고, 특정한 추세가 존재하지 않는 성질 을 말한다. (약정상성)

만약, 각 시점별로 시계열 데이터 의 결합확률밀도함수(아래의 수식 참조)가 변하지 않는다 강정상성 또는 강한 정상성 이라고도 부르며, 위의 개념처럼 평균과 분산이 일정한 정도 라면 약정상성 또는 약한 정상성 이라 부른다.

$\Rho \left(\combi{z}_{t1},\ \combi{z}_{t2},\...\,\ \combi{z}_{tn}\right)\ =\ \Rho \left(\combi{z}_{t1+k},\ \combi{z}_{t2+k},\...\,\ \combi{z}_{tn+k}\right)$ Ρ (z t 1 ,z t 2 ,...,z t n ) \= Ρ (z t 1 + k ,z t 2 + k ,...,z t n + k )

여러 책과 글에서는 시계열 데이터 로 예측 모델을 모델링할 때, 데이터의 정상성 을 점검해야 한다고 안내하고 있다.

그 이유는 시간의 흐름에 따라 시계열 데이터 의 특징이 변한다면, 이는 기존 값으로는 예측하기 힘들기 때문 이다. 특히 ARIMA 모형처럼 자기 자신의 과거 데이터를 통해 미래 데이터를 예측할 경우(자기상관구조 이용), 과 거와 미래가 비슷한 추세를 보여야 예측이 잘 맞아떨어진다.

의문은 여기서 출발하였다.

금융 데이터 A로 A 자신을 예측하는 것이 아니라 A로 B를 예측 을 하는 것 이며, 자기상관구조를 이용 하는 것이 아니라 xgboost LSTM 처럼 머신러닝 앙상블 모델 또는 딥러닝 모델 을 이용하는데도 데이터의 정상성 을 확보해야 하나?

정상성 확보를 위해 차분을 하는 것은 정보 손실 요인이 되진 않을까?

아 진짜 모르겠다구!

생각보다 이걸 시원스럽게 설명해 주는 글이 없어서 좀 헤맸었다. 구글링 대신 여러 금융공학, 통계학 석박사분들과 ChatGPT에게 물어보니 답을 찾을 수 있었다.

※ 결론: 금융 데이터 A를 사용해서 B를 예측하는 머신러닝 또는 딥러닝 모델을 만들고자 할 때, 데이터의 정상성 을 확보할 필요가 없다!

※ 왜?

1. 데이터 A가 비정상성 이더라도 어차피 B를 예측하기 위함이니, 데이터 B에서 비정상성 부분을 포함한 A와의 연계성이 파악되면 상관없다.

(A에서 추세 변화가 발생될 경우, B에서도 그런 특징이 보이면 되는 것이다.)

2. 머신러닝 딥러닝 모델은 비선형성, 비정규성 데이터도 학습이 가능하며, 패턴 인식도 가능하기 때문에 비정상성 데이터에 적용할 수 있다.

3. ARIMA 등 자기상관성을 활용한 모델은 데이터의 정상성 을 가정한 모델이지만, 머신러닝 딥러닝 은 데이터의 정상성 가정이 없다.

※ 추가적인 조언

1. 전통적인 시계열 모델일수록 정상성 에 기반을 두므로, 본인이 사용할 모델이 정상성 에 기반을 두었는지 아닌지 체크해야 한다.

2. 정상성 을 갖춘다는 것은 데이터가 안정적이라는 의미이므로 머신러닝, 딥러닝 모델 학습과 예측 안정성에 도움이 된다.

3. 그래서 비정상성 데이터가 있다면, 원본(비정상성)과 차분 데이터(정상성) 둘 다 모델링 해본 후 결과가 좋은 것을 써먹으면 된다.

4. 다만, 정상성 에 신경 쓰기보다는 정규성(표준화), 다중공선성, Lagging(지연) 을 체크하고 모델에 반영하는 것이 좀 더 결과가 좋을 것이다.

오케이, 궁금증 해결! 이제 분석 들어가자!